#ifndef _OD_SIP_REGISTER_H_
#define _OD_SIP_REGISTER_H_

#include "eXosip2/eXosip2.h"
#include "od_sip_comn.h"

#ifdef __cplusplus
    extern "C" {
#endif

/**
    \brief:Signs of registration flag
*/
typedef enum
{
    REGISTER_FAILED = 0,  
    REGISTER_OK,          
    LOGOUT_OK,            
    LOGOUT_FAILED,        
    REGISTER_INIT_STATUS, 
    REGISTER_REFRESH,     
    REGISTER_STATUS_NUMS
}register_status;


typedef enum 
{
    OD_SIP_REG_UEERNAME = 0,
    OD_SIP_REG_PASSWD,
    OD_SIP_REG_PROXY_ADDR,
    OD_SIP_REG_PROXY_PORT,
    OD_SIP_REG_EXPIRES,
    OD_SIP_REG_REG_STATUS,
    OD_SIP_REG_PROXY_ID,
    OD_SIP_REG_PROXY_DOMAIN,
    OD_SIP_REG_NUM
}od_sip_register_def;

typedef struct 
{
    const char *task_name;
    reg_node_no node; 
}od_sip_register_static_params;

typedef struct 
{
    char username[SIP_NORMAL_ARRAY_SIZE + 1];   /**< 一般为注册的本机号码*/
    char passwd[SIP_NORMAL_ARRAY_SIZE + 1];     /**< 注册的密码，一般是注册服务器分配的*/
    char proxy_addr[SIP_NORMAL_ARRAY_SIZE + 1]; /**< 注册服务器IP地址*/ 
    int  proxy_port;                            /**< 注册服务器端口*/
    int  expires;                               /**< 注册过期时间*/
    int  reg_status;                            /**< 注册状态，see#register_status*/
    char proxy_id[SIP_NORMAL_ARRAY_SIZE + 1];   /**< GB281818, 服务器编码*/
    char proxy_domain[SIP_NORMAL_ARRAY_SIZE + 1]; /**< GB28181, 源域名 */ 
}od_sip_register_dynamic_params;


typedef void* od_sip_register_handle;

extern const od_sip_register_dynamic_params glb_sip_register_dynamic_params_default;

od_sip_register_handle od_sip_register_create(od_sip_register_static_params *static_params, 
                                                od_sip_register_dynamic_params *dynamic_params);


#ifdef __cplusplus
    }
#endif


#endif

/*_*/
